import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';

//可以不用返回值
isNoble(test) {
  return test != 3;
}

bool isNoble2(int test, {int age = 4, @required String name}) {
  return test != 3;
}

bool isNoble3(int test, [int age = 1, String name]) {
  return test != 3;
}

//函数中只有一句表达式，可以使用简写语法
isNoble4(int test) => test != 3;

Function isNoble5(int test) {
  return (value) => test == value;
}

main() {
  test("test1", () {
    isNoble(1);

    //required 表示参数是必须的，若没有提供的话静态检查会有warning
    isNoble2(2);

    //这种方式是错的
//    isNoble2(2,4);

    //用大括号的参数，需要在前面加入参数名
    isNoble2(1, age: 3);

    //用中括号的参数可以根据顺序填入
    isNoble3(1, 3);
    isNoble3(1, 3, "adsf");

    isNoble4(3);

    isNoble5(3)();
  });

  test("testFunc", () {
    var result = isNoble5(3)(3);
    print("result is $result");
  });

  test("test2", () {
//    所有函数都会返回一个值。 如果没有明确指定返回值， 函数体会被隐式的添加 return null; 语句。
    foo() {}

    assert(foo() == null);
  });

}


